In [1]:
import plotly.express as px
import plotly.figure_factory as ff

import numpy as np
import geopandas as gpd
import pandas as pd

Primera Visualización - Cartograma¶

En la primera visualización, se usa la librería Plotly para generear un mapa modificado ligeramente.

Los datos que representa corresponden al Producto Interior Bruto (PIB) nominal de las diferentes Comunidades Autónomas (CCAA), excepto Canarias, para el año 2022.

El mapa representa de forma distorsionada la relevancia del PIB de cada CCAA. Además, se ha añadido un código de colores en azul que premite visualizar fácilmente qué PIB tiene cada CCAA según la intensidad (a mayor PIB más oscuro es el color azul), que además se aclara en la leyenda.

El mapa se ha obtenido de la web go-kart, en donde tras introducir los datos del PIB publicados en el INE se han indicado los valores correspondientes a cada región del mapa disponible en la web, y se ha generado una visualización con la librería Plotly que se ha exportado en formato GeoJSON.

Para obtener más información de cada región, se puede poner el cursor encima de los datos para obtener mnás información detallada, como la posición de dicha CCAA respecto del total, así como el valor exacto del PIB.

In [2]:
# Primera Visualización

## Lectura de datos desde fichero GeoJSON
gdf_gdp = gpd.read_file("G:/Mi unidad/Aa-UOC/2_2C/VDatos/PEC2/spain_gdp_template.geojson")

## Renombrado de ampos y ordenación de valores 
gdf_gdp = gdf_gdp.rename(columns=dict(name="Comunidad Autónoma",
                                      value="PIB (en Euros)"))

gdf_gdp = gdf_gdp.sort_values(by=["PIB (en Euros)", "Comunidad Autónoma"], ascending=False)

gdf_gdp.index = np.arange(1, len(gdf_gdp) + 1)

gdf_gdp[["Comunidad Autónoma", "PIB (en Euros)"]].style
Out[2]:
  Comunidad Autónoma PIB (en Euros)
1 Comunidad de Madrid 261713090
2 Cataluna 255153805
3 Andalucia 180224284
4 Comunidad Valenciana 126416306
5 Pais Vasco 79350168
6 Galicia 69829687
7 Castilla y Leon 64226642
8 Castilla-La Mancha 46715873
9 Aragon 41762830
10 Region de Murcia 35809533
11 Islas Baleares 35465293
12 Principado de Asturias 25822416
13 Comunidad Foral de Navarra 22595257
14 Extremadura 22530837
15 Cantabria 15354834
16 La Rioja 9501978
17 Ceuta 1907382
18 Melilla 1756761
In [3]:
## Cartograma del PIB por CCAA

gdp_suma = sum(gdf_gdp["PIB (en Euros)"])/1000000

px.choropleth_mapbox(
    gdf_gdp,
    geojson=gdf_gdp["geometry"].__geo_interface__,
    locations=gdf_gdp.index,
    color="PIB (en Euros)",
    hover_name="Comunidad Autónoma",
    color_continuous_scale=[(0, "white"), (0.5, "cyan"), (1, "blue")]
).update_layout(
    title="Producto Interior Bruto (PIB) nominal por Comunidades Autónomas (2022) <br>" +
          "Península, Baleares, Ceuta y Melilla <br>" +
          "PIB total: <b>" + str(round(gdp_suma, 2)) + " M€",
    mapbox={
        "style": "white-bg",
        # "center": dict(lat = 40.41, lon = -3.70),
        "zoom":7,
    },
    margin={"l":0,"r":0,"t":40,"b":0},
    font=dict(size=11)
)

Segunda Visualización - Dendrograma Lineal¶

En la segunda visualización se muestra una agrupación de los países de la Unión Europea (UE) en relación al porcentaje de desempleo durante el año 2023.

Los datos se han obtenido del Eurostat, en donde se desglosa el porcentaje de desempleo de cada estado de la UE (se incluye un campo que representa la media de la UE, EU27_2020) para cada mes durante el año 2023. La gráfica se ha generado usando la librería Plotly de Python.

El dendrograma muestra agrupaciones de países con porcentajes similares. Como se puede ver a continuación, países como España o Grecia son unidos debido a que ambos países poseen cerca de un 11% de desempleo, a la vez que países como Italia, Francia, Suecia o Finlandia también son agrupados en el mismo subgrupo puesto que comparten valores de desempleo alrededor de un 7.5%.

In [4]:
# Segunda Visualización

## Lectura de los datos en CSV y edición de los nombres de los estados
file = "G:/Mi unidad/Aa-UOC/2_2C/VDatos/PEC2/eurostat_eu_unemployment_2023_months.csv"
df = pd.read_csv(file)

country_names = ["Austria", "Belgium", "Bulgaria", "Cyprus", "Czechia", "Germany", "Denmark", "Estonia",
                 "Greece", "Spain", "EU27-2023 Average", "Finland", "France", "Croatia", "Hungary",
                 "Ireland", "Italy", "Lithuania", "Luxembourg", "Latvia", "Malta", "Netherlands",
                 "Poland", "Portugal", "Romania", "Sweden", "Slovenia", "Slovakia"]

df["country"] = country_names
df.rename(columns=dict(country="País UE")).style.format(precision=1)
Out[4]:
  País UE Jan Feb Mar Apr May Jun Jul Ago Sep Oct Nov Dec
0 Austria 5.2 5.0 4.6 5.1 4.8 5.1 5.5 5.4 5.4 5.1 5.0 5.4
1 Belgium 5.7 5.6 5.6 5.6 5.7 5.6 5.3 5.3 5.4 5.5 5.5 5.6
2 Bulgaria 4.0 4.1 4.2 4.3 4.3 4.5 4.5 4.5 4.5 4.5 4.4 4.3
3 Cyprus 6.5 6.4 6.2 6.1 6.1 6.1 6.1 6.0 5.9 5.9 6.0 6.2
4 Czechia 2.5 2.5 2.6 2.7 2.5 2.7 2.7 2.5 2.7 2.9 2.5 2.8
5 Germany 3.0 2.9 2.9 2.9 2.9 3.0 3.0 3.0 3.1 3.1 3.1 3.1
6 Denmark 4.3 5.2 4.7 5.0 4.8 4.7 5.4 4.2 4.8 6.2 6.1 6.3
7 Estonia 5.1 5.1 5.7 6.1 6.6 7.1 7.6 7.5 6.7 6.3 6.4 7.0
8 Greece 11.3 11.2 11.3 11.5 11.1 11.1 11.0 11.0 10.7 10.6 10.8 10.5
9 Spain 13.0 12.9 12.5 12.1 11.9 11.9 11.9 11.9 11.9 11.9 11.8 11.7
10 EU27-2023 Average 6.1 6.0 6.0 6.0 6.0 6.0 6.0 6.0 6.1 6.1 6.1 6.0
11 Finland 7.0 6.6 6.6 7.1 7.1 7.2 7.5 7.3 7.5 7.5 7.7 7.5
12 France 7.1 7.1 7.1 7.3 7.4 7.4 7.4 7.4 7.4 7.5 7.5 7.6
13 Croatia 6.5 6.3 6.2 6.1 6.1 6.2 6.3 6.4 6.3 6.3 6.2 6.1
14 Hungary 3.8 3.8 3.8 3.9 3.9 3.9 4.0 4.1 4.0 4.1 4.2 4.3
15 Ireland 4.2 4.1 4.1 4.1 4.1 4.3 4.4 4.4 4.6 4.5 4.5 4.5
16 Italy 7.9 7.8 7.9 7.8 7.7 7.5 7.7 7.5 7.7 7.7 7.5 7.3
17 Lithuania 6.7 7.1 6.9 6.4 6.4 6.4 6.6 7.0 7.2 7.3 7.2 7.0
18 Luxembourg 4.9 4.9 4.9 4.9 5.0 5.2 5.2 5.3 5.5 5.5 5.6 5.5
19 Latvia 6.2 6.1 6.0 6.2 6.4 6.6 6.6 6.6 6.6 6.8 6.9 7.0
20 Malta 3.5 3.5 3.4 3.2 3.1 2.9 2.9 3.1 3.1 2.9 2.9 2.9
21 Netherlands 3.6 3.5 3.5 3.4 3.5 3.5 3.6 3.6 3.7 3.6 3.5 3.6
22 Poland 2.7 2.7 2.7 2.7 2.8 2.8 2.8 2.8 2.9 3.0 3.0 3.0
23 Portugal 7.0 6.9 6.8 6.5 6.4 6.3 6.3 6.3 6.6 6.7 6.6 6.5
24 Romania 5.6 5.5 5.5 5.5 5.5 5.7 5.6 5.5 5.6 5.6 5.5 5.6
25 Sweden 7.3 7.7 7.2 7.2 7.2 8.0 7.1 8.1 8.1 7.9 7.9 8.2
26 Slovenia 3.5 3.6 3.7 3.7 3.8 3.8 3.8 3.8 3.7 3.6 3.5 3.3
27 Slovakia 6.1 6.0 6.0 5.9 5.8 5.8 5.9 5.9 5.8 5.7 5.6 5.6
In [5]:
## Dendrograma que agrupa los estados de la UE por la tasa de desempleo media durante 2023

X = df.loc[:, df.columns != "country"]

fig = ff.create_dendrogram(X, labels=country_names, color_threshold=3.0, orientation='left')
fig.update_layout(width=750, height=600,
                  title="Agrupaciones de países de la Unión Europea por porcentaje de desempleo en 2023",
                  xaxis_title="Diferencias de porcentaje de desempleo",
                  yaxis_title="Países de la UE",
                  plot_bgcolor="rgba(0, 0, 0, 0)")
fig.show()